#include<stdio.h>
int main()
{
	int M = 0;
	int N = 0;
	int zdgy = 0;
	scanf("%d %d",&M,&N);
	int max = (M>N)?M:N;
	int min = (M>N)?N:M;
	for(int i = min;i>=1;i--)
	{
		if(min%i==0)
		{
			if(max%i==0)
			{zdgy = i;break;}
			else
				continue;
		}
	}
	int zxgb = (M*N)/zdgy;
	printf("%d %d",zdgy,zxgb);
	return 0;
}
//#include<stdio.h>
//int main()
//{
//	int M,N;
//	scanf("%d %d",&M,&N);
//	int maxyue = 0;
//	int minbei = 0;
//	int max,min;
//	if(M>N) { max = M; min = N;}
//	else {max = N;min = M;}
//	int i=0;
//	int j =0;
//	for(i=min;i>=1;i--)
//	{
//		if(min%i==0)
//		{
//			if(max%i==0)
//			{maxyue = i;
//				break;      }        
//		}
//	}
//	for(j=max;j>=max;j++)
//	{
//		if(j%min == 0)
//		{
//			if(j%max == 0)
//			{
//				minbei = j;
//				break;
//			}
//		}
//		
//	}
//	printf("%d %d",maxyue,minbei);
//	
//	
//	return 0;
//}
